import 'dart:io';

import 'package:sqflite/sqflite.dart';

class DBManager{

  //数据库版本
  static const int _VERSION=1;
  //数据库名称
  static const String _DB_NAME='wangziyi.db';
  //数据库实例
  static  Database _database;

  static init()async{
    var databasePath =await getDatabasesPath();
    String dnName=_DB_NAME;
    String path=databasePath+dnName;
    if(Platform.isIOS){
      path=databasePath+'/'+dnName;
    }

    //打开数据库
    _database =await openDatabase(path,version: _VERSION,onCreate: (Database db,int version)async{
      //如果需要建表，在这里建表

    });
  }

  //判断指定表是否存在
  static isTableExits(String tableName)async{
    await getCurrDatabase();
    String sql="select * from Sqlite_master where type ='table' and name='$tableName'";
    var res =await _database.rawQuery(sql);
    return res!= null && res.length>0;
  }
  //获取当前数据库实例
  static Future<Database> getCurrDatabase() async{
    if(_database==null){
      await init();
    }
    return _database;
  }


  //关闭数据库
  static close(){
    /**
     * dart 语法糖 ?.
        它的意思是左边如果为空返回 null，否则返回右边的值。
        A?.B
        如果 A 等于 null，那么 A?.B 为 null
        如果 A 不等于 null，那么 A?.B 等价于 A.B
     */
    _database?.close();
    _database=null;
  }
}